package com.azxcrm.project.system.order.dao;

import java.util.List;

import com.azxcrm.project.system.order.domain.Order;	

/**
 * 订单 数据层
 * 
 * @author Dustyone
 * @date 2018-09-11
 */
public interface IOrderDao 
{

	/**
     * 查询订单信息
     * 
     * @param orderId 订单ID
     * @return 订单信息
     */
	public Order selectOrderById(Integer orderId);
	
	/**
     * 查询订单信息
     * 
     * @param order 订单信息
     * @return 订单信息
     */
	public Order selectOrderByOrder(Order order);
	
	/**
     * 查询订单列表
     * 
     * @param order 订单信息
     * @return 订单集合
     */
	public List<Order> selectOrderList(Order order);
	
	/**
     * 查询待审核订单列表
     * 
     * @param order 订单信息
     * @return 订单集合
     */
	public List<Order> selectOrderAuditList(Order order);
	
	/**
     * 查询待跟进订单列表
     * 
     * @param order 待跟进订单信息
     * @return 待跟进订单集合
     */
	public List<Order> selectOrderFollowList(Order order);
	
	/**
	 * 根据部门id查询部门待分配订单条数
	 * @param deptId
	 * @return
	 */
	public int selectOrderCount(Integer deptId);
	
	/**
     * 新增订单
     * 
     * @param order 订单信息
     * @return 结果
     */
	public int insertOrder(Order order);
	
	/**
     * 修改订单
     * 
     * @param order 订单信息
     * @return 结果
     */
	public int updateOrder(Order order);
	
	/**
	 * 根据订单ID修改订单状态
	 * @param orderId
	 * @return
	 */
	public int updateOrderStatusById(Order Order);
	
	/**
     * 删除订单
     * 
     * @param orderId 订单ID
     * @return 结果
     */
	public int deleteOrderById(Integer orderId);
	
	/**
     * 批量删除订单
     * 
     * @param orderIds 需要删除的数据ID
     * @return 结果
     */
	public int batchDeleteOrder(Integer[] orderIds);
	
	/**
	 * 查询新增后最新的记录
	 * @return
	 */
	public Order selectOrder();
	
	/**
	 * wap统计当前月份业务员的订单数
	 * @param Order
	 * @return
	 */
	public Order countOrderById(Order Order);
	
	/**
	 * wap统计当前业务员的总订单数和价格
	 * @param Order
	 * @return
	 */
	public Order countOrder(Order Order);
	
	/**
	 * 查看指定产品是否被订单引用
	 * @param productId
	 * @return
	 */
	public int checkProductCasecaded(Integer productId);
	
	/**
	 * 查看指定线索是否被订单引用
	 * @param clueId
	 * @return
	 */
	public int checkCustomerClueCasecaded(Integer clueId);
	
	/**
	 * 根据业务员手机号查询用户的派单记录
	 * @param order
	 * @return
	 */
	public List<Order> selectOrderByPhone(Order order);
	
	/**
	  * 根据产品类型统计不同状态下的订单数量
	  * @param typeId
	  * @return 
	  */
	public List<Order> selectStatusCount(Integer typeId);

	/**
	  * 根据产品类型统计不同状态下的订单数量总合
	  * @return 
	  */
	public List<Order> selectSumStatusCount();
	
	/**
	 * 根据订单id查询待处理订单详情
	 * @param orderId
	 * @return
	 */
	public Order selectOrderByOrderId(Integer orderId);
}